package pqt;

import java.util.concurrent.Callable;

import jssc.SerialPort;
import jssc.SerialPortException;

class LectorDeTrama implements Callable<String> {
    
	   String trama=null;
	   private SerialPort puerto;
	   private String resolucion;
	   
	   public String call() throws Exception {
	    		   
		   String trama=null;
			
			try {
				
					
				if(resolucion.equalsIgnoreCase("LR"))
				{
					while(true)
					{
						trama = getTrama("LR");
						
						if(trama!=null)
						{
							
							if(trama.length()>7)
								return trama;
						}
					}
				}
				else
				{
					trama = getTrama("HR");
					return trama;
				}
					
			} catch (SerialPortException | NullPointerException e ) {
				e.printStackTrace();
			}
			
			return trama;
	    }
	    
	  
	   private String getTrama(String definicion) throws SerialPortException {
		  
		   String trama=null;
		   
		   if(definicion.equalsIgnoreCase("LR"))
		   {
			   puerto.writeInt(5); 
		   }
		   else
		   {
			   puerto.writeInt(153);
			   puerto.writeInt(51);
			   puerto.writeInt(49);
			   puerto.writeInt(50);
			   puerto.writeInt(49);
			   puerto.writeInt(52);
			   puerto.writeInt(57);
			   puerto.writeInt(50);
			   puerto.writeInt(49);
			   puerto.writeInt(150);
		   }
		   
			try {
				
				Thread.sleep(200); //Espera para poder darle tiempo a la balanza que lea.
			
			} catch (InterruptedException e) {
				
				e.printStackTrace();
			}
			
			trama = puerto.readHexString(); //convierto los valores de Hexa a String
		  
			return trama;
	   }
	   
	   public  LectorDeTrama(SerialPort puerto,String resolucion){
	    	this.puerto = puerto;
	    	this.resolucion = resolucion;
	   }
}
